/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package probability;
import java.util.*;

/**
 *
 * @author antonio
 */

/**
 * Class: _TotalInfoPointPosition_
 * Usage: Class _WorkerLocatorBayesian_ | Metodo run()
 *
 * _LocatorBayesian_ estrae dalla coda delle posizioni _QueuePosition_ oggetti
 * della classe _ProbabilityPosition_ .
 * Un oggetto istanza di _ProbabilityPosition_ contiene due campi:
 *
 * - 1 - Vector infoPosition - contiene oggetti della classe _AccessPoint_
 *                             un oggetto di classe _AccessPoint_ astrae un singolo
 *                             AP rilevato da NS in una data posizione
 *
 * - 2 - Vector points - contiene i punti della mappa che sono possibili candidati
 *                       a rappresentare la posizione corrente occupata dall'utente.
 *
 * I segnali sniffati da NS in una posizione sono raggruppati in base al mac che
 * li ha generati e salvati in oggetti _AccessPoint_ con rispettivo mac di provenienza
 * e numero totale dei segnali rilevati
 *
 * E' necessario fondere tutti questi segnali suddivisi nei vari oggetti _AccessPoint_
 * per avere un solo insieme di valori di segnali provenienti da tutti i mac di un dato
 * punto per calcolare, su questo insieme unico di valori, le probabilità.
 *
 * La classe _TotalInfoPointPosition_ ha il compito di rappresentare/memorizzare
 * questo insieme totale di segnali per un dato punto.
 * Oltre a rendere disponibili i metodi per effettuare il merge per creare se stessa.
 *
 **/
public class TotalInfoPointPosition {

    private String point;
    private Vector signal;
    private Integer total;

    private Vector mac;

    public TotalInfoPointPosition(String point)
    {
        this.point = point;
        this.signal = new Vector();
        this.total = new Integer(0);


        //inizializzo il vettore dei segnali
        for(int i=0; i<100; i++)
            this.signal.add(new Integer(0));
    }

    public void updateSignal(int pos, Integer value)
    {
        Integer tmp = (Integer) this.signal.elementAt(pos);
        tmp = tmp + value;
        this.signal.setElementAt(tmp, pos);
    }

    public Integer getSignal(int pos)
    {
        Integer tmp = (Integer) this.signal.elementAt(pos);
        return tmp;
    }

    public void updateTotal(Integer value)
    {
        Integer tmp = this.total;
        tmp = tmp + value;
        this.total = tmp;
    }

    public void setMac(Vector mac)
    {
        this.mac = mac;
    }

    public Vector getMac()
    {
        return this.mac;
    }

    public String getPoint()
    {
        return this.point;
    }

   public Integer getTotal()
   {
       return this.total;
   }

}
